package com.sls.web.manager.game.service;

import java.util.List;

import com.sls.web.manager.game.pojo.OrderInfo;
import com.sls.web.manager.game.querybean.OrderInfoQuery;
import com.sls.web.manager.page.Pagination;
import com.sls.web.manager.pojo.UserInfoVO;

/**
 * 订单Service接口层
 * 
 * @author gesx
 * 
 */
public interface OrderInfoService {
	/**
	 * 分页查询
	 * 
	 * @param orderInfoQuery
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public Pagination<OrderInfo> queryList(OrderInfoQuery orderInfoQuery,
			UserInfoVO userInfoVO) throws Exception;

	/**
	 * 修改
	 * 
	 * @param orderInfo
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public boolean update(OrderInfo orderInfo, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 查询单条记录
	 * 
	 * @param Id
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public OrderInfo queryById(String Id, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 退款操作
	 * 
	 * @param orderInfo
	 * @param userInfoVO
	 * @throws Exception
	 */
	public String refund(OrderInfo orderInfo, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 查询供应商名称列表
	 * 
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public List<String> querySupplyNameList(UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 查询某个供应商下的所有订单信息
	 * 
	 * @param supplyName
	 * @param startTime
	 * @param endTime
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public List<OrderInfo> queryOrderInfo(String supplyName, String isPay,
			String status, String downUserNo, String startTime, String endTime,
			UserInfoVO userInfoVO, String accountNo) throws Exception;

	/**
	 * 主动通知
	 * 
	 * @param orderId
	 * @param userInfoVO
	 * @throws Exception
	 */
	public void manualNotify(String orderId, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 查询所有的工号
	 * 
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public List<OrderInfo> queryAllAccountNo(OrderInfoQuery orderInfoQuery,
			UserInfoVO userInfoVO) throws Exception;
	
	
	public Long queryOrderCostTotalPrice(OrderInfoQuery orderInfoQuery,
			UserInfoVO userInfoVO)throws Exception;
	
	public Long queryOrderTotalPrice(OrderInfoQuery orderInfoQuery,
			UserInfoVO userInfoVO)throws Exception;
	
	public Long queryOrderTotalParvalue(OrderInfoQuery orderInfoQuery,
			UserInfoVO userInfoVO)throws Exception;
	
	public Long queryOrderTotalNum(OrderInfoQuery orderInfoQuery,
			UserInfoVO userInfoVO)throws Exception;
}
